跳到主要内容

mysql的数据类型,列类型,字段类型

三大类:

数值,字符串,日期时间

数值
--

### 整数,int

int 4个字节。

还有占用其他空间的整型:

tinyint 1

smallint 2

mediumint 3

int 4

bigint 8

![](CFD306B42684E29B6EFD216B5C82C145.png)

如何选择:

通过业务逻辑判断!常见的是 tinyint,int!

mysql的整型,有php整型不具备的概念:

one,无符号

只能表示整数或0。那么最大的整数会很大!

默认是 有符号!可通过 整型的 unsigned选项,int unsigned 设置整型无符号

![](DC00CE2ABDD93B69C326725A29AEB7A2.png)

![](6774DBEC79D4B4B5BD8139642C7CEF4F.png)

无符号的:

![](3C0BB4BE304565410601988E0FB0583C.png)

two,显示宽度

显示宽度,不决定整型的范围。而决定 在显示出该数之后,如果宽度不够,则采用前导零不齐!此时需要 额外的属性 zerofill 来设置!

![](93A4C79DBAB2B355FF44034C32E1FA67.png)

可见 无符号,默认的显示宽度是 10,因此全都使用0来补齐。

可以设置整型的显示宽度!在 int(M)即可!

![](BC2D0560933346208D5889B83BC383F4.png)

255个宽度就可以了!

注意,如果超出了宽度范围,则直接显示!

![](76D02506BF9BA013654485CFF51809EF.png)

额外的,mysql中,没有 布尔型!

但是 存在 Boolean这个关键字,表示 tinyint(1)

![](75F04B2F644CA6643F617A8DE5FDF7F9.png)

典型的,0表示假,1表示真!

### 浮点数,float,double

单精度,float,4个字节

双精度,double,8个字节

![](6A82EC2025CBA28A8A68C4CE1D8C3D8F.png)

双精度:

![](E9B691961F941FBBF8741D7A6153D3CA.png)

在定义浮点数,典型的需要指明其 有效位数,和 小数位数

float(M,D)

double(M,D)

M:所有的有效位数

D:其中的小数位数

以上两个值,决定一个浮点数的有效范围!

![](7A94014EBD9143F89A42701B2CC95141.png)

典型的浮点数

float(10, 2);

99999999.99

注意,浮点数,近似值,不是精确值!如果一个数,很大,接近最大值,可能出错!

![](8AA9271641B0369529E8A92342FA8086.png)

一旦出现精确数据(小数)需要保存可以使用,下面的定点数

### 定点数,decimal

小数点是固定的!

decmal,与定义浮点数一致,也有 有效位数与小数位数的概念:

decimal(M,D)

![](9A86D607EBBB3946B9E853696E17F1F6.png)

不是 数的形式存储,类似于字符串的形式!

![](B2874CA8CEF51DF6CBC6910FC448EA77.png)

注意,关于小数:

1,支持 科学计数法

![](3B43A5D0E656337CB970E6BE99B7F821.png)

2,同样支持 unsigned,无符号!

3,同样支持 zerofill,

![](6782FC008D8F4030C36DDED561F5D2A5.png)

TIP:小数的M,即表示有效范围,也表示显示宽度!(而整数的M只表示显示宽度)